[INFO] fetching crate json-highlight-writer 1.1.0...
[INFO] fixing json-highlight-writer-1.1.0 against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] extracting crate json-highlight-writer 1.1.0 into /workspace/builds/worker-2-tc2/source
[INFO] started tweaking crates.io crate json-highlight-writer 1.1.0
[INFO] finished tweaking crates.io crate json-highlight-writer 1.1.0
[INFO] tweaked toml for crates.io crate json-highlight-writer 1.1.0 written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate json-highlight-writer 1.1.0 on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 11 packages to latest compatible versions
[INFO] [stderr]       Adding colored v1.9.4 (available: v3.1.1)
[INFO] [stderr]       Adding json v0.11.15 (available: v0.12.4)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] e93d694c6a977e442e7a6b350c17f025e10abf09e987581741b1a837b29aa0b3
[INFO] running `Command { std: "docker" "start" "e93d694c6a977e442e7a6b350c17f025e10abf09e987581741b1a837b29aa0b3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "e93d694c6a977e442e7a6b350c17f025e10abf09e987581741b1a837b29aa0b3" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e93d694c6a977e442e7a6b350c17f025e10abf09e987581741b1a837b29aa0b3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "e93d694c6a977e442e7a6b350c17f025e10abf09e987581741b1a837b29aa0b3" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2018 edition to 2021
[INFO] [stderr]     Checking json v0.11.15
[INFO] [stderr]     Checking json-highlight-writer v1.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/lib.rs from 2018 edition to 2021
[INFO] [stderr]        Fixed src/highlight_color.rs (1 fix)
[INFO] [stderr]        Fixed src/highlight.rs (1 fix)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.05s
[INFO] [stderr] crater-edition-check: json-highlight-writer v1.1.0 (/opt/rustwide/workdir) updating edition from 2018 to 2021
[INFO] [stderr]     Checking json-highlight-writer v1.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead
[INFO] [stdout]   --> src/generator/print_dec.rs:62:34
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let mut buf: [u8; 30] = mem::uninitialized();
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead
[INFO] [stdout]   --> src/generator/print_dec.rs:62:34
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let mut buf: [u8; 30] = mem::uninitialized();
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the type `[u8; 30]` does not permit being left uninitialized
[INFO] [stdout]   --> src/generator/print_dec.rs:62:29
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let mut buf: [u8; 30] = mem::uninitialized();
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |                             |
[INFO] [stdout]    |                             this code causes undefined behavior when executed
[INFO] [stdout]    |                             help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
[INFO] [stdout]    |
[INFO] [stdout]    = note: integers must be initialized
[INFO] [stdout]    = note: `#[warn(invalid_value)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the type `[u8; 30]` does not permit being left uninitialized
[INFO] [stdout]   --> src/generator/print_dec.rs:62:29
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let mut buf: [u8; 30] = mem::uninitialized();
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |                             |
[INFO] [stdout]    |                             this code causes undefined behavior when executed
[INFO] [stdout]    |                             help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
[INFO] [stdout]    |
[INFO] [stdout]    = note: integers must be initialized
[INFO] [stdout]    = note: `#[warn(invalid_value)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.33s
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2018 edition to 2021
[INFO] [stderr]     Checking json-highlight-writer v1.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/lib.rs from 2021 edition to 2024
[INFO] [stderr] error: errors present after applying fixes to crate `json_highlight_writer`
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]  --> src/lib.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 |     let mut gen = highlight::HighlightGenerator::new();
[INFO] [stdout]   |             ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout]   = note: `--force-warn keyword-idents-2024` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]  --> src/highlight.rs
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]   --> src/lib.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     gen.write_json_with_highlight(
[INFO] [stdout]    |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]   = cause: error[E0409]: variable `color` is bound inconsistently across alternatives separated by `|`
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]   --> src/lib.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     gen.consume()
[INFO] [stdout]    |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]              --> src/highlight.rs:69:93
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]   --> src/lib.rs:17:13
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let mut gen = highlight::HighlightGenerator::new_with_colors(colors);
[INFO] [stdout]    |             ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]   --> src/lib.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     gen.write_json_with_highlight(
[INFO] [stdout]    |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            69 |                 (WriteSlice::Match(code, color),_) | (WriteSlice::Remainder(code), Some(ref color)) => {
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]   --> src/lib.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     gen.consume()
[INFO] [stdout]    |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |                                          ----- first binding                                ^^^^^ bound in different ways
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]   --> src/lib.rs:25:13
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let mut gen = highlight::HighlightGenerator::new_with_colors_and_remainder(colors, remainder_color);
[INFO] [stdout]    |             ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]   --> src/lib.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     gen.write_json_with_highlight(
[INFO] [stdout]    |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]   --> src/lib.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 |     gen.consume()
[INFO] [stdout]    |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            error: aborting due to 1 previous error
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:199:13
[INFO] [stdout]     |
[INFO] [stdout] 199 |     let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |             ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:200:5
[INFO] [stdout]     |
[INFO] [stdout] 200 |     gen.write_json(
[INFO] [stdout]     |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:203:16
[INFO] [stdout]     |
[INFO] [stdout] 203 |     assert_eq!(gen.consume(), r#"[null,"world",true]"#);
[INFO] [stdout]     |                ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            For more information about this error, try `rustc --explain E0409`.
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:220:13
[INFO] [stdout]     |
[INFO] [stdout] 220 |     let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |             ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] help: to report this as a bug, open an issue at https://github.com/rust-lang/rust/issues, quoting the full output of this command
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:222:5
[INFO] [stdout]     |
[INFO] [stdout] 222 |     gen.write_json_with_highlight(
[INFO] [stdout]     |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] help: to possibly apply more fixes, pass in the `--broken-code` flag
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:226:21
[INFO] [stdout]     |
[INFO] [stdout] 226 |     assert!(ptr::eq(gen.slices[0], &input["bar"]));
[INFO] [stdout]     |                     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] note: original diagnostics will follow:
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:227:21
[INFO] [stdout]     |
[INFO] [stdout] 227 |     assert!(ptr::eq(gen.slices[1], &input["list"]));
[INFO] [stdout]     |                     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:242:13
[INFO] [stdout]     |
[INFO] [stdout] 242 |     let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |             ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:244:5
[INFO] [stdout]     |
[INFO] [stdout] 244 |     gen.write_json_with_highlight(
[INFO] [stdout]     |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:249:7
[INFO] [stdout]     |
[INFO] [stdout] 249 |       gen.code[0],
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:256:7
[INFO] [stdout]     |
[INFO] [stdout] 256 |       gen.code[1],
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:264:7
[INFO] [stdout]     |
[INFO] [stdout] 264 |       gen.code[2],
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:284:13
[INFO] [stdout]     |
[INFO] [stdout] 284 |     let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |             ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:286:5
[INFO] [stdout]     |
[INFO] [stdout] 286 |     gen.write_json_with_highlight(
[INFO] [stdout]     |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:291:7
[INFO] [stdout]     |
[INFO] [stdout] 291 |       gen.code[0],
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:313:15
[INFO] [stdout]     |
[INFO] [stdout] 313 |       let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |               ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:315:7
[INFO] [stdout]     |
[INFO] [stdout] 315 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:320:7
[INFO] [stdout]     |
[INFO] [stdout] 320 |       gen.consume(),
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:343:15
[INFO] [stdout]     |
[INFO] [stdout] 343 |       let mut gen = HighlightGenerator::new_with_colors_and_remainder(None, Some(Color::White));
[INFO] [stdout]     |               ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:345:7
[INFO] [stdout]     |
[INFO] [stdout] 345 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:350:7
[INFO] [stdout]     |
[INFO] [stdout] 350 |       gen.consume(),
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:374:15
[INFO] [stdout]     |
[INFO] [stdout] 374 |       let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |               ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:376:7
[INFO] [stdout]     |
[INFO] [stdout] 376 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:381:7
[INFO] [stdout]     |
[INFO] [stdout] 381 |       gen.consume(),
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:407:15
[INFO] [stdout]     |
[INFO] [stdout] 407 |       let mut gen = HighlightGenerator::new_with_colors(vec![Color::Red, Color::Green]);
[INFO] [stdout]     |               ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:409:7
[INFO] [stdout]     |
[INFO] [stdout] 409 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:414:7
[INFO] [stdout]     |
[INFO] [stdout] 414 |       gen.consume(),
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:440:15
[INFO] [stdout]     |
[INFO] [stdout] 440 |       let mut gen = HighlightGenerator::new_with_colors(vec![Color::Red, Color::Green]);
[INFO] [stdout]     |               ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:442:7
[INFO] [stdout]     |
[INFO] [stdout] 442 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:447:7
[INFO] [stdout]     |
[INFO] [stdout] 447 |       gen.consume(),
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> src/generator/print_dec.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | unsafe fn write_num(n: &mut u64, curr: &mut isize, buf_ptr: *mut u8, lut_ptr: *const u8) {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: `--force-warn unsafe-op-in-unsafe-fn` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:30:34
[INFO] [stdout]    |
[INFO] [stdout] 30 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:30:54
[INFO] [stdout]    |
[INFO] [stdout] 30 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |         ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(*curr + 2), 2);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:31:34
[INFO] [stdout]    |
[INFO] [stdout] 31 |         ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(*curr + 2), 2);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:31:54
[INFO] [stdout]    |
[INFO] [stdout] 31 |         ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(*curr + 2), 2);
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 39 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:39:34
[INFO] [stdout]    |
[INFO] [stdout] 39 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:39:54
[INFO] [stdout]    |
[INFO] [stdout] 39 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 |         *buf_ptr.offset(*curr) = (*n as u8) + b'0';
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:45:10
[INFO] [stdout]    |
[INFO] [stdout] 45 |         *buf_ptr.offset(*curr) = (*n as u8) + b'0';
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 49 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:49:34
[INFO] [stdout]    |
[INFO] [stdout] 49 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:49:54
[INFO] [stdout]    |
[INFO] [stdout] 49 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::mem::uninitialized` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:62:29
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let mut buf: [u8; 30] = mem::uninitialized();
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> src/generator/print_dec.rs:53:1
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub unsafe fn write<W: io::Write>(wr: &mut W, positive: bool, mut n: u64, exponent: i16) -> io::Result<()> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write_num` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:68:9
[INFO] [stdout]    |
[INFO] [stdout] 68 |         write_num(&mut n, &mut curr, buf_ptr, lut_ptr);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:71:13
[INFO] [stdout]    |
[INFO] [stdout] 71 | /             slice::from_raw_parts(
[INFO] [stdout] 72 | |                 buf_ptr.offset(curr),
[INFO] [stdout] 73 | |                 buf.len() - curr as usize
[INFO] [stdout] 74 | |             )
[INFO] [stdout]    | |_____________^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:72:17
[INFO] [stdout]    |
[INFO] [stdout] 72 |                 buf_ptr.offset(curr),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:89:17
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:89:42
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:89:62
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:90:17
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:90:42
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:90:62
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:100:17
[INFO] [stdout]     |
[INFO] [stdout] 100 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:100:42
[INFO] [stdout]     |
[INFO] [stdout] 100 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:100:62
[INFO] [stdout]     |
[INFO] [stdout] 100 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:105:17
[INFO] [stdout]     |
[INFO] [stdout] 105 |                 *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:105:18
[INFO] [stdout]     |
[INFO] [stdout] 105 |                 *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:110:13
[INFO] [stdout]     |
[INFO] [stdout] 110 |             *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:110:14
[INFO] [stdout]     |
[INFO] [stdout] 110 |             *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write_num` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:112:13
[INFO] [stdout]     |
[INFO] [stdout] 112 |             write_num(&mut n, &mut curr, buf_ptr, lut_ptr);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:115:17
[INFO] [stdout]     |
[INFO] [stdout] 115 |                 slice::from_raw_parts(buf_ptr.offset(curr), buf.len() - curr as usize)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:115:39
[INFO] [stdout]     |
[INFO] [stdout] 115 |                 slice::from_raw_parts(buf_ptr.offset(curr), buf.len() - curr as usize)
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:128:13
[INFO] [stdout]     |
[INFO] [stdout] 128 |             *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:128:14
[INFO] [stdout]     |
[INFO] [stdout] 128 |             *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:138:17
[INFO] [stdout]     |
[INFO] [stdout] 138 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:138:42
[INFO] [stdout]     |
[INFO] [stdout] 138 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:138:62
[INFO] [stdout]     |
[INFO] [stdout] 138 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:139:17
[INFO] [stdout]     |
[INFO] [stdout] 139 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:139:42
[INFO] [stdout]     |
[INFO] [stdout] 139 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:139:62
[INFO] [stdout]     |
[INFO] [stdout] 139 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:147:17
[INFO] [stdout]     |
[INFO] [stdout] 147 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:147:42
[INFO] [stdout]     |
[INFO] [stdout] 147 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:147:62
[INFO] [stdout]     |
[INFO] [stdout] 147 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:153:17
[INFO] [stdout]     |
[INFO] [stdout] 153 |                 *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:153:18
[INFO] [stdout]     |
[INFO] [stdout] 153 |                 *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:159:17
[INFO] [stdout]     |
[INFO] [stdout] 159 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:159:42
[INFO] [stdout]     |
[INFO] [stdout] 159 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:159:62
[INFO] [stdout]     |
[INFO] [stdout] 159 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |             *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:177:14
[INFO] [stdout]     |
[INFO] [stdout] 177 |             *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write_num` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:179:13
[INFO] [stdout]     |
[INFO] [stdout] 179 |             write_num(&mut n, &mut curr, buf_ptr, lut_ptr);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:184:13
[INFO] [stdout]     |
[INFO] [stdout] 184 | /             slice::from_raw_parts(
[INFO] [stdout] 185 | |                 buf_ptr.offset(curr),
[INFO] [stdout] 186 | |                 buf.len() - curr as usize
[INFO] [stdout] 187 | |             )
[INFO] [stdout]     | |_____________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:185:17
[INFO] [stdout]     |
[INFO] [stdout] 185 |                 buf_ptr.offset(curr),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:200:16
[INFO] [stdout]     |
[INFO] [stdout] 200 |         return write(wr, true, e as u64, 0);
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write_num` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:205:5
[INFO] [stdout]     |
[INFO] [stdout] 205 |     write_num(&mut n, &mut curr, buf_ptr, lut_ptr);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:211:13
[INFO] [stdout]     |
[INFO] [stdout] 211 | /             slice::from_raw_parts(
[INFO] [stdout] 212 | |                 buf_ptr.offset(curr),
[INFO] [stdout] 213 | |                 buf.len() - curr as usize
[INFO] [stdout] 214 | |             )
[INFO] [stdout]     | |_____________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:212:17
[INFO] [stdout]     |
[INFO] [stdout] 212 |                 buf_ptr.offset(curr),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:224:9
[INFO] [stdout]     |
[INFO] [stdout] 224 |         *buf_ptr.offset(curr - 1) = *buf_ptr.offset(curr);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:224:10
[INFO] [stdout]     |
[INFO] [stdout] 224 |         *buf_ptr.offset(curr - 1) = *buf_ptr.offset(curr);
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:224:37
[INFO] [stdout]     |
[INFO] [stdout] 224 |         *buf_ptr.offset(curr - 1) = *buf_ptr.offset(curr);
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:224:38
[INFO] [stdout]     |
[INFO] [stdout] 224 |         *buf_ptr.offset(curr - 1) = *buf_ptr.offset(curr);
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:225:9
[INFO] [stdout]     |
[INFO] [stdout] 225 |         *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:225:10
[INFO] [stdout]     |
[INFO] [stdout] 225 |         *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 231 | /         slice::from_raw_parts(
[INFO] [stdout] 232 | |             buf_ptr.offset(curr),
[INFO] [stdout] 233 | |             buf.len() - curr as usize
[INFO] [stdout] 234 | |         )
[INFO] [stdout]     | |_________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:232:13
[INFO] [stdout]     |
[INFO] [stdout] 232 |             buf_ptr.offset(curr),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:237:5
[INFO] [stdout]     |
[INFO] [stdout] 237 |     write(wr, true, e, 0)
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly borrow within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]   --> src/highlight.rs:19:34
[INFO] [stdout]    |
[INFO] [stdout] 19 |           (WriteSlice::Remainder(ref left), WriteSlice::Remainder(ref right)) => right == left,
[INFO] [stdout]    |                                  ^^^                              ^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |                                  |
[INFO] [stdout]    |                                  explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:19:45
[INFO] [stdout]    |
[INFO] [stdout] 19 |           (WriteSlice::Remainder(ref left), WriteSlice::Remainder(ref right)) => right == left,
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 |           (WriteSlice::Remainder(ref left), WriteSlice::Remainder(ref right)) => right == left,
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout]    = note: `--force-warn rust-2024-incompatible-pat` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: remove the unnecessary binding modifiers
[INFO] [stdout]    |
[INFO] [stdout] 19 -           (WriteSlice::Remainder(ref left), WriteSlice::Remainder(ref right)) => right == left,
[INFO] [stdout] 19 +           (WriteSlice::Remainder(left), WriteSlice::Remainder(right)) => right == left,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly borrow within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]   --> src/highlight.rs:20:30
[INFO] [stdout]    |
[INFO] [stdout] 20 |           (WriteSlice::Match(ref left, ref lcolor), WriteSlice::Match(ref right, ref rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout]    |                              ^^^       ^^^                            ^^^        ^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |                              |         |                              |
[INFO] [stdout]    |                              |         |                              explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |                              |         explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |                              explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:20:53
[INFO] [stdout]    |
[INFO] [stdout] 20 |           (WriteSlice::Match(ref left, ref lcolor), WriteSlice::Match(ref right, ref rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 |           (WriteSlice::Match(ref left, ref lcolor), WriteSlice::Match(ref right, ref rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: remove the unnecessary binding modifiers
[INFO] [stdout]    |
[INFO] [stdout] 20 -           (WriteSlice::Match(ref left, ref lcolor), WriteSlice::Match(ref right, ref rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout] 20 +           (WriteSlice::Match(left, lcolor), WriteSlice::Match(right, rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly borrow within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]   --> src/highlight.rs:69:42
[INFO] [stdout]    |
[INFO] [stdout] 69 |                 (WriteSlice::Match(code, ref color),_) | (WriteSlice::Remainder(code), Some(ref color)) => {
[INFO] [stdout]    |                                          ^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:69:18
[INFO] [stdout]    |
[INFO] [stdout] 69 |                 (WriteSlice::Match(code, ref color),_) | (WriteSlice::Remainder(code), Some(ref color)) => {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]    |
[INFO] [stdout] 69 -                 (WriteSlice::Match(code, ref color),_) | (WriteSlice::Remainder(code), Some(ref color)) => {
[INFO] [stdout] 69 +                 (WriteSlice::Match(code, color),_) | (WriteSlice::Remainder(code), Some(ref color)) => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly borrow within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]   --> src/highlight.rs:87:35
[INFO] [stdout]    |
[INFO] [stdout] 87 |         Some(WriteSlice::Match(_, ref color)) => Some(color.clone()),
[INFO] [stdout]    |                                   ^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:87:14
[INFO] [stdout]    |
[INFO] [stdout] 87 |         Some(WriteSlice::Match(_, ref color)) => Some(color.clone()),
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]    |
[INFO] [stdout] 87 -         Some(WriteSlice::Match(_, ref color)) => Some(color.clone()),
[INFO] [stdout] 87 +         Some(WriteSlice::Match(_, color)) => Some(color.clone()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly borrow within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> src/highlight.rs:150:40
[INFO] [stdout]     |
[INFO] [stdout] 150 |             Some(WriteSlice::Remainder(ref mut code)) => code,
[INFO] [stdout]     |                                        ^^^^^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> src/highlight.rs:150:18
[INFO] [stdout]     |
[INFO] [stdout] 150 |             Some(WriteSlice::Remainder(ref mut code)) => code,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&mut _`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]     |
[INFO] [stdout] 150 -             Some(WriteSlice::Remainder(ref mut code)) => code,
[INFO] [stdout] 150 +             Some(WriteSlice::Remainder(code)) => code,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly borrow within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> src/highlight.rs:151:36
[INFO] [stdout]     |
[INFO] [stdout] 151 |             Some(WriteSlice::Match(ref mut code, _)) => code,
[INFO] [stdout]     |                                    ^^^^^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> src/highlight.rs:151:18
[INFO] [stdout]     |
[INFO] [stdout] 151 |             Some(WriteSlice::Match(ref mut code, _)) => code,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&mut _`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]     |
[INFO] [stdout] 151 -             Some(WriteSlice::Match(ref mut code, _)) => code,
[INFO] [stdout] 151 +             Some(WriteSlice::Match(code, _)) => code,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0133`.
[INFO] [stdout] 
[INFO] [stderr] error: errors present after applying fixes to crate `json_highlight_writer`
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]  --> src/lib.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 |     let mut gen = highlight::HighlightGenerator::new();
[INFO] [stdout]   |             ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout]   = note: `--force-warn keyword-idents-2024` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]  --> src/highlight.rs
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]   --> src/lib.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     gen.write_json_with_highlight(
[INFO] [stdout]    |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]   = cause: error[E0409]: variable `color` is bound inconsistently across alternatives separated by `|`
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]   --> src/lib.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     gen.consume()
[INFO] [stdout]    |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]              --> src/highlight.rs:69:93
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]   --> src/lib.rs:17:13
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let mut gen = highlight::HighlightGenerator::new_with_colors(colors);
[INFO] [stdout]    |             ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]   --> src/lib.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     gen.write_json_with_highlight(
[INFO] [stdout]    |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            69 |                 (WriteSlice::Match(code, color),_) | (WriteSlice::Remainder(code), Some(ref color)) => {
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]   --> src/lib.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     gen.consume()
[INFO] [stdout]    |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]               |                                          ----- first binding                                ^^^^^ bound in different ways
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]   --> src/lib.rs:25:13
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let mut gen = highlight::HighlightGenerator::new_with_colors_and_remainder(colors, remainder_color);
[INFO] [stdout]    |             ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]   --> src/lib.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     gen.write_json_with_highlight(
[INFO] [stdout]    |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]   --> src/lib.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 |     gen.consume()
[INFO] [stdout]    |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            error: aborting due to 1 previous error
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:199:13
[INFO] [stdout]     |
[INFO] [stdout] 199 |     let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |             ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:200:5
[INFO] [stdout]     |
[INFO] [stdout] 200 |     gen.write_json(
[INFO] [stdout]     |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:203:16
[INFO] [stdout]     |
[INFO] [stdout] 203 |     assert_eq!(gen.consume(), r#"[null,"world",true]"#);
[INFO] [stdout]     |                ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            For more information about this error, try `rustc --explain E0409`.
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:220:13
[INFO] [stdout]     |
[INFO] [stdout] 220 |     let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |             ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] help: to report this as a bug, open an issue at https://github.com/rust-lang/rust/issues, quoting the full output of this command
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:222:5
[INFO] [stdout]     |
[INFO] [stdout] 222 |     gen.write_json_with_highlight(
[INFO] [stdout]     |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] help: to possibly apply more fixes, pass in the `--broken-code` flag
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:226:21
[INFO] [stdout]     |
[INFO] [stdout] 226 |     assert!(ptr::eq(gen.slices[0], &input["bar"]));
[INFO] [stdout]     |                     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] note: original diagnostics will follow:
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:227:21
[INFO] [stdout]     |
[INFO] [stdout] 227 |     assert!(ptr::eq(gen.slices[1], &input["list"]));
[INFO] [stdout]     |                     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:242:13
[INFO] [stdout]     |
[INFO] [stdout] 242 |     let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |             ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:244:5
[INFO] [stdout]     |
[INFO] [stdout] 244 |     gen.write_json_with_highlight(
[INFO] [stdout]     |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:249:7
[INFO] [stdout]     |
[INFO] [stdout] 249 |       gen.code[0],
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:256:7
[INFO] [stdout]     |
[INFO] [stdout] 256 |       gen.code[1],
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:264:7
[INFO] [stdout]     |
[INFO] [stdout] 264 |       gen.code[2],
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:284:13
[INFO] [stdout]     |
[INFO] [stdout] 284 |     let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |             ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:286:5
[INFO] [stdout]     |
[INFO] [stdout] 286 |     gen.write_json_with_highlight(
[INFO] [stdout]     |     ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:291:7
[INFO] [stdout]     |
[INFO] [stdout] 291 |       gen.code[0],
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:313:15
[INFO] [stdout]     |
[INFO] [stdout] 313 |       let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |               ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:315:7
[INFO] [stdout]     |
[INFO] [stdout] 315 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:320:7
[INFO] [stdout]     |
[INFO] [stdout] 320 |       gen.consume(),
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:343:15
[INFO] [stdout]     |
[INFO] [stdout] 343 |       let mut gen = HighlightGenerator::new_with_colors_and_remainder(None, Some(Color::White));
[INFO] [stdout]     |               ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:345:7
[INFO] [stdout]     |
[INFO] [stdout] 345 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:350:7
[INFO] [stdout]     |
[INFO] [stdout] 350 |       gen.consume(),
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:374:15
[INFO] [stdout]     |
[INFO] [stdout] 374 |       let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |               ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:376:7
[INFO] [stdout]     |
[INFO] [stdout] 376 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:381:7
[INFO] [stdout]     |
[INFO] [stdout] 381 |       gen.consume(),
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:407:15
[INFO] [stdout]     |
[INFO] [stdout] 407 |       let mut gen = HighlightGenerator::new_with_colors(vec![Color::Red, Color::Green]);
[INFO] [stdout]     |               ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:409:7
[INFO] [stdout]     |
[INFO] [stdout] 409 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:414:7
[INFO] [stdout]     |
[INFO] [stdout] 414 |       gen.consume(),
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:440:15
[INFO] [stdout]     |
[INFO] [stdout] 440 |       let mut gen = HighlightGenerator::new_with_colors(vec![Color::Red, Color::Green]);
[INFO] [stdout]     |               ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:442:7
[INFO] [stdout]     |
[INFO] [stdout] 442 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `gen` is a keyword in the 2024 edition
[INFO] [stdout]    --> src/highlight.rs:447:7
[INFO] [stdout]     |
[INFO] [stdout] 447 |       gen.consume(),
[INFO] [stdout]     |       ^^^ help: you can use a raw identifier to stay compatible: `r#gen`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/gen-keyword.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> src/generator/print_dec.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | unsafe fn write_num(n: &mut u64, curr: &mut isize, buf_ptr: *mut u8, lut_ptr: *const u8) {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: `--force-warn unsafe-op-in-unsafe-fn` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:30:34
[INFO] [stdout]    |
[INFO] [stdout] 30 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:30:54
[INFO] [stdout]    |
[INFO] [stdout] 30 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |         ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(*curr + 2), 2);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:31:34
[INFO] [stdout]    |
[INFO] [stdout] 31 |         ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(*curr + 2), 2);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:31:54
[INFO] [stdout]    |
[INFO] [stdout] 31 |         ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(*curr + 2), 2);
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 39 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:39:34
[INFO] [stdout]    |
[INFO] [stdout] 39 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:39:54
[INFO] [stdout]    |
[INFO] [stdout] 39 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 |         *buf_ptr.offset(*curr) = (*n as u8) + b'0';
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:45:10
[INFO] [stdout]    |
[INFO] [stdout] 45 |         *buf_ptr.offset(*curr) = (*n as u8) + b'0';
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 49 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:49:34
[INFO] [stdout]    |
[INFO] [stdout] 49 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:49:54
[INFO] [stdout]    |
[INFO] [stdout] 49 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::mem::uninitialized` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:62:29
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let mut buf: [u8; 30] = mem::uninitialized();
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> src/generator/print_dec.rs:53:1
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub unsafe fn write<W: io::Write>(wr: &mut W, positive: bool, mut n: u64, exponent: i16) -> io::Result<()> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write_num` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:68:9
[INFO] [stdout]    |
[INFO] [stdout] 68 |         write_num(&mut n, &mut curr, buf_ptr, lut_ptr);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:71:13
[INFO] [stdout]    |
[INFO] [stdout] 71 | /             slice::from_raw_parts(
[INFO] [stdout] 72 | |                 buf_ptr.offset(curr),
[INFO] [stdout] 73 | |                 buf.len() - curr as usize
[INFO] [stdout] 74 | |             )
[INFO] [stdout]    | |_____________^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:72:17
[INFO] [stdout]    |
[INFO] [stdout] 72 |                 buf_ptr.offset(curr),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:89:17
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:89:42
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:89:62
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:90:17
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:90:42
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:90:62
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:100:17
[INFO] [stdout]     |
[INFO] [stdout] 100 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:100:42
[INFO] [stdout]     |
[INFO] [stdout] 100 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:100:62
[INFO] [stdout]     |
[INFO] [stdout] 100 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:105:17
[INFO] [stdout]     |
[INFO] [stdout] 105 |                 *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:105:18
[INFO] [stdout]     |
[INFO] [stdout] 105 |                 *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:110:13
[INFO] [stdout]     |
[INFO] [stdout] 110 |             *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:110:14
[INFO] [stdout]     |
[INFO] [stdout] 110 |             *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write_num` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:112:13
[INFO] [stdout]     |
[INFO] [stdout] 112 |             write_num(&mut n, &mut curr, buf_ptr, lut_ptr);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:115:17
[INFO] [stdout]     |
[INFO] [stdout] 115 |                 slice::from_raw_parts(buf_ptr.offset(curr), buf.len() - curr as usize)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:115:39
[INFO] [stdout]     |
[INFO] [stdout] 115 |                 slice::from_raw_parts(buf_ptr.offset(curr), buf.len() - curr as usize)
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:128:13
[INFO] [stdout]     |
[INFO] [stdout] 128 |             *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:128:14
[INFO] [stdout]     |
[INFO] [stdout] 128 |             *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:138:17
[INFO] [stdout]     |
[INFO] [stdout] 138 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:138:42
[INFO] [stdout]     |
[INFO] [stdout] 138 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:138:62
[INFO] [stdout]     |
[INFO] [stdout] 138 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:139:17
[INFO] [stdout]     |
[INFO] [stdout] 139 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:139:42
[INFO] [stdout]     |
[INFO] [stdout] 139 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:139:62
[INFO] [stdout]     |
[INFO] [stdout] 139 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:147:17
[INFO] [stdout]     |
[INFO] [stdout] 147 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:147:42
[INFO] [stdout]     |
[INFO] [stdout] 147 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:147:62
[INFO] [stdout]     |
[INFO] [stdout] 147 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:153:17
[INFO] [stdout]     |
[INFO] [stdout] 153 |                 *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:153:18
[INFO] [stdout]     |
[INFO] [stdout] 153 |                 *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:159:17
[INFO] [stdout]     |
[INFO] [stdout] 159 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.19s
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:159:42
[INFO] [stdout]     |
[INFO] [stdout] 159 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:159:62
[INFO] [stdout]     |
[INFO] [stdout] 159 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |             *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:177:14
[INFO] [stdout]     |
[INFO] [stdout] 177 |             *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write_num` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:179:13
[INFO] [stdout]     |
[INFO] [stdout] 179 |             write_num(&mut n, &mut curr, buf_ptr, lut_ptr);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:184:13
[INFO] [stdout]     |
[INFO] [stdout] 184 | /             slice::from_raw_parts(
[INFO] [stdout] 185 | |                 buf_ptr.offset(curr),
[INFO] [stdout] 186 | |                 buf.len() - curr as usize
[INFO] [stdout] 187 | |             )
[INFO] [stdout]     | |_____________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:185:17
[INFO] [stdout]     |
[INFO] [stdout] 185 |                 buf_ptr.offset(curr),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:200:16
[INFO] [stdout]     |
[INFO] [stdout] 200 |         return write(wr, true, e as u64, 0);
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write_num` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:205:5
[INFO] [stdout]     |
[INFO] [stdout] 205 |     write_num(&mut n, &mut curr, buf_ptr, lut_ptr);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:211:13
[INFO] [stdout]     |
[INFO] [stdout] 211 | /             slice::from_raw_parts(
[INFO] [stdout] 212 | |                 buf_ptr.offset(curr),
[INFO] [stdout] 213 | |                 buf.len() - curr as usize
[INFO] [stdout] 214 | |             )
[INFO] [stdout]     | |_____________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:212:17
[INFO] [stdout]     |
[INFO] [stdout] 212 |                 buf_ptr.offset(curr),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:224:9
[INFO] [stdout]     |
[INFO] [stdout] 224 |         *buf_ptr.offset(curr - 1) = *buf_ptr.offset(curr);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:224:10
[INFO] [stdout]     |
[INFO] [stdout] 224 |         *buf_ptr.offset(curr - 1) = *buf_ptr.offset(curr);
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:224:37
[INFO] [stdout]     |
[INFO] [stdout] 224 |         *buf_ptr.offset(curr - 1) = *buf_ptr.offset(curr);
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:224:38
[INFO] [stdout]     |
[INFO] [stdout] 224 |         *buf_ptr.offset(curr - 1) = *buf_ptr.offset(curr);
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:225:9
[INFO] [stdout]     |
[INFO] [stdout] 225 |         *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:225:10
[INFO] [stdout]     |
[INFO] [stdout] 225 |         *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 231 | /         slice::from_raw_parts(
[INFO] [stdout] 232 | |             buf_ptr.offset(curr),
[INFO] [stdout] 233 | |             buf.len() - curr as usize
[INFO] [stdout] 234 | |         )
[INFO] [stdout]     | |_________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:232:13
[INFO] [stdout]     |
[INFO] [stdout] 232 |             buf_ptr.offset(curr),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:237:5
[INFO] [stdout]     |
[INFO] [stdout] 237 |     write(wr, true, e, 0)
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly borrow within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]   --> src/highlight.rs:19:34
[INFO] [stdout]    |
[INFO] [stdout] 19 |           (WriteSlice::Remainder(ref left), WriteSlice::Remainder(ref right)) => right == left,
[INFO] [stdout]    |                                  ^^^                              ^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |                                  |
[INFO] [stdout]    |                                  explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:19:45
[INFO] [stdout]    |
[INFO] [stdout] 19 |           (WriteSlice::Remainder(ref left), WriteSlice::Remainder(ref right)) => right == left,
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 |           (WriteSlice::Remainder(ref left), WriteSlice::Remainder(ref right)) => right == left,
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout]    = note: `--force-warn rust-2024-incompatible-pat` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: remove the unnecessary binding modifiers
[INFO] [stdout]    |
[INFO] [stdout] 19 -           (WriteSlice::Remainder(ref left), WriteSlice::Remainder(ref right)) => right == left,
[INFO] [stdout] 19 +           (WriteSlice::Remainder(left), WriteSlice::Remainder(right)) => right == left,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly borrow within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]   --> src/highlight.rs:20:30
[INFO] [stdout]    |
[INFO] [stdout] 20 |           (WriteSlice::Match(ref left, ref lcolor), WriteSlice::Match(ref right, ref rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout]    |                              ^^^       ^^^                            ^^^        ^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |                              |         |                              |
[INFO] [stdout]    |                              |         |                              explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |                              |         explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |                              explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:20:53
[INFO] [stdout]    |
[INFO] [stdout] 20 |           (WriteSlice::Match(ref left, ref lcolor), WriteSlice::Match(ref right, ref rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 |           (WriteSlice::Match(ref left, ref lcolor), WriteSlice::Match(ref right, ref rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: remove the unnecessary binding modifiers
[INFO] [stdout]    |
[INFO] [stdout] 20 -           (WriteSlice::Match(ref left, ref lcolor), WriteSlice::Match(ref right, ref rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout] 20 +           (WriteSlice::Match(left, lcolor), WriteSlice::Match(right, rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly borrow within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]   --> src/highlight.rs:69:42
[INFO] [stdout]    |
[INFO] [stdout] 69 |                 (WriteSlice::Match(code, ref color),_) | (WriteSlice::Remainder(code), Some(ref color)) => {
[INFO] [stdout]    |                                          ^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:69:18
[INFO] [stdout]    |
[INFO] [stdout] 69 |                 (WriteSlice::Match(code, ref color),_) | (WriteSlice::Remainder(code), Some(ref color)) => {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]    |
[INFO] [stdout] 69 -                 (WriteSlice::Match(code, ref color),_) | (WriteSlice::Remainder(code), Some(ref color)) => {
[INFO] [stdout] 69 +                 (WriteSlice::Match(code, color),_) | (WriteSlice::Remainder(code), Some(ref color)) => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly borrow within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]   --> src/highlight.rs:87:35
[INFO] [stdout]    |
[INFO] [stdout] 87 |         Some(WriteSlice::Match(_, ref color)) => Some(color.clone()),
[INFO] [stdout]    |                                   ^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:87:14
[INFO] [stdout]    |
[INFO] [stdout] 87 |         Some(WriteSlice::Match(_, ref color)) => Some(color.clone()),
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]    |
[INFO] [stdout] 87 -         Some(WriteSlice::Match(_, ref color)) => Some(color.clone()),
[INFO] [stdout] 87 +         Some(WriteSlice::Match(_, color)) => Some(color.clone()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly borrow within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> src/highlight.rs:150:40
[INFO] [stdout]     |
[INFO] [stdout] 150 |             Some(WriteSlice::Remainder(ref mut code)) => code,
[INFO] [stdout]     |                                        ^^^^^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> src/highlight.rs:150:18
[INFO] [stdout]     |
[INFO] [stdout] 150 |             Some(WriteSlice::Remainder(ref mut code)) => code,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&mut _`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]     |
[INFO] [stdout] 150 -             Some(WriteSlice::Remainder(ref mut code)) => code,
[INFO] [stdout] 150 +             Some(WriteSlice::Remainder(code)) => code,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot explicitly borrow within an implicitly-borrowing pattern in Rust 2024
[INFO] [stdout]    --> src/highlight.rs:151:36
[INFO] [stdout]     |
[INFO] [stdout] 151 |             Some(WriteSlice::Match(ref mut code, _)) => code,
[INFO] [stdout]     |                                    ^^^^^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> src/highlight.rs:151:18
[INFO] [stdout]     |
[INFO] [stdout] 151 |             Some(WriteSlice::Match(ref mut code, _)) => code,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&mut _`
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/match-ergonomics.html>
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]     |
[INFO] [stdout] 151 -             Some(WriteSlice::Match(ref mut code, _)) => code,
[INFO] [stdout] 151 +             Some(WriteSlice::Match(code, _)) => code,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0133`.
[INFO] [stdout] 
[INFO] [stderr] crater-edition-check: json-highlight-writer v1.1.0 (/opt/rustwide/workdir) updating edition from 2021 to 2024
[INFO] [stderr]     Checking json-highlight-writer v1.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]  --> src/lib.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 |     let mut gen = highlight::HighlightGenerator::new();
[INFO] [stdout]   |             ^^^ expected identifier, found reserved keyword
[INFO] [stdout]   |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]   |
[INFO] [stdout] 9 |     let mut r#gen = highlight::HighlightGenerator::new();
[INFO] [stdout]   |             ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]   --> src/lib.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     gen.write_json_with_highlight(
[INFO] [stdout]    |     ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]   --> src/lib.rs:17:13
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let mut gen = highlight::HighlightGenerator::new_with_colors(colors);
[INFO] [stdout]    |             ^^^ expected identifier, found reserved keyword
[INFO] [stdout]    |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let mut r#gen = highlight::HighlightGenerator::new_with_colors(colors);
[INFO] [stdout]    |             ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]   --> src/lib.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     gen.write_json_with_highlight(
[INFO] [stdout]    |     ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]   --> src/lib.rs:25:13
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let mut gen = highlight::HighlightGenerator::new_with_colors_and_remainder(colors, remainder_color);
[INFO] [stdout]    |             ^^^ expected identifier, found reserved keyword
[INFO] [stdout]    |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let mut r#gen = highlight::HighlightGenerator::new_with_colors_and_remainder(colors, remainder_color);
[INFO] [stdout]    |             ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]   --> src/lib.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     gen.write_json_with_highlight(
[INFO] [stdout]    |     ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:199:13
[INFO] [stdout]     |
[INFO] [stdout] 199 |     let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |             ^^^ expected identifier, found reserved keyword
[INFO] [stdout]     |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]     |
[INFO] [stdout] 199 |     let mut r#gen = HighlightGenerator::new();
[INFO] [stdout]     |             ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:200:5
[INFO] [stdout]     |
[INFO] [stdout] 200 |     gen.write_json(
[INFO] [stdout]     |     ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:220:13
[INFO] [stdout]     |
[INFO] [stdout] 220 |     let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |             ^^^ expected identifier, found reserved keyword
[INFO] [stdout]     |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]     |
[INFO] [stdout] 220 |     let mut r#gen = HighlightGenerator::new();
[INFO] [stdout]     |             ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:222:5
[INFO] [stdout]     |
[INFO] [stdout] 222 |     gen.write_json_with_highlight(
[INFO] [stdout]     |     ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:242:13
[INFO] [stdout]     |
[INFO] [stdout] 242 |     let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |             ^^^ expected identifier, found reserved keyword
[INFO] [stdout]     |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]     |
[INFO] [stdout] 242 |     let mut r#gen = HighlightGenerator::new();
[INFO] [stdout]     |             ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:244:5
[INFO] [stdout]     |
[INFO] [stdout] 244 |     gen.write_json_with_highlight(
[INFO] [stdout]     |     ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:284:13
[INFO] [stdout]     |
[INFO] [stdout] 284 |     let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |             ^^^ expected identifier, found reserved keyword
[INFO] [stdout]     |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]     |
[INFO] [stdout] 284 |     let mut r#gen = HighlightGenerator::new();
[INFO] [stdout]     |             ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:286:5
[INFO] [stdout]     |
[INFO] [stdout] 286 |     gen.write_json_with_highlight(
[INFO] [stdout]     |     ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:313:15
[INFO] [stdout]     |
[INFO] [stdout] 313 |       let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |               ^^^ expected identifier, found reserved keyword
[INFO] [stdout]     |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]     |
[INFO] [stdout] 313 |       let mut r#gen = HighlightGenerator::new();
[INFO] [stdout]     |               ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:315:7
[INFO] [stdout]     |
[INFO] [stdout] 315 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:343:15
[INFO] [stdout]     |
[INFO] [stdout] 343 |       let mut gen = HighlightGenerator::new_with_colors_and_remainder(None, Some(Color::White));
[INFO] [stdout]     |               ^^^ expected identifier, found reserved keyword
[INFO] [stdout]     |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]     |
[INFO] [stdout] 343 |       let mut r#gen = HighlightGenerator::new_with_colors_and_remainder(None, Some(Color::White));
[INFO] [stdout]     |               ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:345:7
[INFO] [stdout]     |
[INFO] [stdout] 345 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:374:15
[INFO] [stdout]     |
[INFO] [stdout] 374 |       let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |               ^^^ expected identifier, found reserved keyword
[INFO] [stdout]     |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]     |
[INFO] [stdout] 374 |       let mut r#gen = HighlightGenerator::new();
[INFO] [stdout]     |               ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:376:7
[INFO] [stdout]     |
[INFO] [stdout] 376 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:407:15
[INFO] [stdout]     |
[INFO] [stdout] 407 |       let mut gen = HighlightGenerator::new_with_colors(vec![Color::Red, Color::Green]);
[INFO] [stdout]     |               ^^^ expected identifier, found reserved keyword
[INFO] [stdout]     |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]     |
[INFO] [stdout] 407 |       let mut r#gen = HighlightGenerator::new_with_colors(vec![Color::Red, Color::Green]);
[INFO] [stdout]     |               ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:409:7
[INFO] [stdout]     |
[INFO] [stdout] 409 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:440:15
[INFO] [stdout]     |
[INFO] [stdout] 440 |       let mut gen = HighlightGenerator::new_with_colors(vec![Color::Red, Color::Green]);
[INFO] [stdout]     |               ^^^ expected identifier, found reserved keyword
[INFO] [stdout]     |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]     |
[INFO] [stdout] 440 |       let mut r#gen = HighlightGenerator::new_with_colors(vec![Color::Red, Color::Green]);
[INFO] [stdout]     |               ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:442:7
[INFO] [stdout]     |
[INFO] [stdout] 442 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]  --> src/lib.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 |     let mut gen = highlight::HighlightGenerator::new();
[INFO] [stdout]   |             ^^^ expected identifier, found reserved keyword
[INFO] [stdout]   |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]   |
[INFO] [stdout] 9 |     let mut r#gen = highlight::HighlightGenerator::new();
[INFO] [stdout]   |             ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]   --> src/lib.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     gen.write_json_with_highlight(
[INFO] [stdout]    |     ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]   --> src/lib.rs:17:13
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let mut gen = highlight::HighlightGenerator::new_with_colors(colors);
[INFO] [stdout]    |             ^^^ expected identifier, found reserved keyword
[INFO] [stdout]    |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let mut r#gen = highlight::HighlightGenerator::new_with_colors(colors);
[INFO] [stdout]    |             ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]   --> src/lib.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     gen.write_json_with_highlight(
[INFO] [stdout]    |     ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]   --> src/lib.rs:25:13
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let mut gen = highlight::HighlightGenerator::new_with_colors_and_remainder(colors, remainder_color);
[INFO] [stdout]    |             ^^^ expected identifier, found reserved keyword
[INFO] [stdout]    |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let mut r#gen = highlight::HighlightGenerator::new_with_colors_and_remainder(colors, remainder_color);
[INFO] [stdout]    |             ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]   --> src/lib.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     gen.write_json_with_highlight(
[INFO] [stdout]    |     ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:199:13
[INFO] [stdout]     |
[INFO] [stdout] 199 |     let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |             ^^^ expected identifier, found reserved keyword
[INFO] [stdout]     |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]     |
[INFO] [stdout] 199 |     let mut r#gen = HighlightGenerator::new();
[INFO] [stdout]     |             ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:200:5
[INFO] [stdout]     |
[INFO] [stdout] 200 |     gen.write_json(
[INFO] [stdout]     |     ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:220:13
[INFO] [stdout]     |
[INFO] [stdout] 220 |     let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |             ^^^ expected identifier, found reserved keyword
[INFO] [stdout]     |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]     |
[INFO] [stdout] 220 |     let mut r#gen = HighlightGenerator::new();
[INFO] [stdout]     |             ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:222:5
[INFO] [stdout]     |
[INFO] [stdout] 222 |     gen.write_json_with_highlight(
[INFO] [stdout]     |     ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:242:13
[INFO] [stdout]     |
[INFO] [stdout] 242 |     let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |             ^^^ expected identifier, found reserved keyword
[INFO] [stdout]     |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]     |
[INFO] [stdout] 242 |     let mut r#gen = HighlightGenerator::new();
[INFO] [stdout]     |             ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:244:5
[INFO] [stdout]     |
[INFO] [stdout] 244 |     gen.write_json_with_highlight(
[INFO] [stdout]     |     ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:284:13
[INFO] [stdout]     |
[INFO] [stdout] 284 |     let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |             ^^^ expected identifier, found reserved keyword
[INFO] [stdout]     |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]     |
[INFO] [stdout] 284 |     let mut r#gen = HighlightGenerator::new();
[INFO] [stdout]     |             ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:286:5
[INFO] [stdout]     |
[INFO] [stdout] 286 |     gen.write_json_with_highlight(
[INFO] [stdout]     |     ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:313:15
[INFO] [stdout]     |
[INFO] [stdout] 313 |       let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |               ^^^ expected identifier, found reserved keyword
[INFO] [stdout]     |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]     |
[INFO] [stdout] 313 |       let mut r#gen = HighlightGenerator::new();
[INFO] [stdout]     |               ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:315:7
[INFO] [stdout]     |
[INFO] [stdout] 315 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:343:15
[INFO] [stdout]     |
[INFO] [stdout] 343 |       let mut gen = HighlightGenerator::new_with_colors_and_remainder(None, Some(Color::White));
[INFO] [stdout]     |               ^^^ expected identifier, found reserved keyword
[INFO] [stdout]     |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]     |
[INFO] [stdout] 343 |       let mut r#gen = HighlightGenerator::new_with_colors_and_remainder(None, Some(Color::White));
[INFO] [stdout]     |               ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:345:7
[INFO] [stdout]     |
[INFO] [stdout] 345 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:374:15
[INFO] [stdout]     |
[INFO] [stdout] 374 |       let mut gen = HighlightGenerator::new();
[INFO] [stdout]     |               ^^^ expected identifier, found reserved keyword
[INFO] [stdout]     |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]     |
[INFO] [stdout] 374 |       let mut r#gen = HighlightGenerator::new();
[INFO] [stdout]     |               ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:376:7
[INFO] [stdout]     |
[INFO] [stdout] 376 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:407:15
[INFO] [stdout]     |
[INFO] [stdout] 407 |       let mut gen = HighlightGenerator::new_with_colors(vec![Color::Red, Color::Green]);
[INFO] [stdout]     |               ^^^ expected identifier, found reserved keyword
[INFO] [stdout]     |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]     |
[INFO] [stdout] 407 |       let mut r#gen = HighlightGenerator::new_with_colors(vec![Color::Red, Color::Green]);
[INFO] [stdout]     |               ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:409:7
[INFO] [stdout]     |
[INFO] [stdout] 409 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:440:15
[INFO] [stdout]     |
[INFO] [stdout] 440 |       let mut gen = HighlightGenerator::new_with_colors(vec![Color::Red, Color::Green]);
[INFO] [stdout]     |               ^^^ expected identifier, found reserved keyword
[INFO] [stdout]     |
[INFO] [stdout] help: escape `gen` to use it as an identifier
[INFO] [stdout]     |
[INFO] [stdout] 440 |       let mut r#gen = HighlightGenerator::new_with_colors(vec![Color::Red, Color::Green]);
[INFO] [stdout]     |               ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected expression, found reserved keyword `gen`
[INFO] [stdout]    --> src/highlight.rs:442:7
[INFO] [stdout]     |
[INFO] [stdout] 442 |       gen.write_json_with_highlight(
[INFO] [stdout]     |       ^^^ expected expression
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead
[INFO] [stdout]   --> src/generator/print_dec.rs:62:34
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let mut buf: [u8; 30] = mem::uninitialized();
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> src/generator/print_dec.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | unsafe fn write_num(n: &mut u64, curr: &mut isize, buf_ptr: *mut u8, lut_ptr: *const u8) {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:30:34
[INFO] [stdout]    |
[INFO] [stdout] 30 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:30:54
[INFO] [stdout]    |
[INFO] [stdout] 30 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |         ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(*curr + 2), 2);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:31:34
[INFO] [stdout]    |
[INFO] [stdout] 31 |         ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(*curr + 2), 2);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:31:54
[INFO] [stdout]    |
[INFO] [stdout] 31 |         ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(*curr + 2), 2);
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 39 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:39:34
[INFO] [stdout]    |
[INFO] [stdout] 39 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:39:54
[INFO] [stdout]    |
[INFO] [stdout] 39 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 |         *buf_ptr.offset(*curr) = (*n as u8) + b'0';
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:45:10
[INFO] [stdout]    |
[INFO] [stdout] 45 |         *buf_ptr.offset(*curr) = (*n as u8) + b'0';
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead
[INFO] [stdout]   --> src/generator/print_dec.rs:62:34
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let mut buf: [u8; 30] = mem::uninitialized();
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 49 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:49:34
[INFO] [stdout]    |
[INFO] [stdout] 49 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:49:54
[INFO] [stdout]    |
[INFO] [stdout] 49 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::mem::uninitialized` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:62:29
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let mut buf: [u8; 30] = mem::uninitialized();
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> src/generator/print_dec.rs:53:1
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub unsafe fn write<W: io::Write>(wr: &mut W, positive: bool, mut n: u64, exponent: i16) -> io::Result<()> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write_num` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:68:9
[INFO] [stdout]    |
[INFO] [stdout] 68 |         write_num(&mut n, &mut curr, buf_ptr, lut_ptr);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:71:13
[INFO] [stdout]    |
[INFO] [stdout] 71 | /             slice::from_raw_parts(
[INFO] [stdout] 72 | |                 buf_ptr.offset(curr),
[INFO] [stdout] 73 | |                 buf.len() - curr as usize
[INFO] [stdout] 74 | |             )
[INFO] [stdout]    | |_____________^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:72:17
[INFO] [stdout]    |
[INFO] [stdout] 72 |                 buf_ptr.offset(curr),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:89:17
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:89:42
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:89:62
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:90:17
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:90:42
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:90:62
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:100:17
[INFO] [stdout]     |
[INFO] [stdout] 100 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:100:42
[INFO] [stdout]     |
[INFO] [stdout] 100 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:100:62
[INFO] [stdout]     |
[INFO] [stdout] 100 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:105:17
[INFO] [stdout]     |
[INFO] [stdout] 105 |                 *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:105:18
[INFO] [stdout]     |
[INFO] [stdout] 105 |                 *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:110:13
[INFO] [stdout]     |
[INFO] [stdout] 110 |             *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:110:14
[INFO] [stdout]     |
[INFO] [stdout] 110 |             *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write_num` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:112:13
[INFO] [stdout]     |
[INFO] [stdout] 112 |             write_num(&mut n, &mut curr, buf_ptr, lut_ptr);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:115:17
[INFO] [stdout]     |
[INFO] [stdout] 115 |                 slice::from_raw_parts(buf_ptr.offset(curr), buf.len() - curr as usize)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:115:39
[INFO] [stdout]     |
[INFO] [stdout] 115 |                 slice::from_raw_parts(buf_ptr.offset(curr), buf.len() - curr as usize)
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:128:13
[INFO] [stdout]     |
[INFO] [stdout] 128 |             *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:128:14
[INFO] [stdout]     |
[INFO] [stdout] 128 |             *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:138:17
[INFO] [stdout]     |
[INFO] [stdout] 138 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:138:42
[INFO] [stdout]     |
[INFO] [stdout] 138 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:138:62
[INFO] [stdout]     |
[INFO] [stdout] 138 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:139:17
[INFO] [stdout]     |
[INFO] [stdout] 139 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:139:42
[INFO] [stdout]     |
[INFO] [stdout] 139 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:139:62
[INFO] [stdout]     |
[INFO] [stdout] 139 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:147:17
[INFO] [stdout]     |
[INFO] [stdout] 147 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:147:42
[INFO] [stdout]     |
[INFO] [stdout] 147 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:147:62
[INFO] [stdout]     |
[INFO] [stdout] 147 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:153:17
[INFO] [stdout]     |
[INFO] [stdout] 153 |                 *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:153:18
[INFO] [stdout]     |
[INFO] [stdout] 153 |                 *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:159:17
[INFO] [stdout]     |
[INFO] [stdout] 159 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:159:42
[INFO] [stdout]     |
[INFO] [stdout] 159 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:159:62
[INFO] [stdout]     |
[INFO] [stdout] 159 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |             *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:177:14
[INFO] [stdout]     |
[INFO] [stdout] 177 |             *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write_num` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:179:13
[INFO] [stdout]     |
[INFO] [stdout] 179 |             write_num(&mut n, &mut curr, buf_ptr, lut_ptr);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:184:13
[INFO] [stdout]     |
[INFO] [stdout] 184 | /             slice::from_raw_parts(
[INFO] [stdout] 185 | |                 buf_ptr.offset(curr),
[INFO] [stdout] 186 | |                 buf.len() - curr as usize
[INFO] [stdout] 187 | |             )
[INFO] [stdout]     | |_____________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:185:17
[INFO] [stdout]     |
[INFO] [stdout] 185 |                 buf_ptr.offset(curr),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:200:16
[INFO] [stdout]     |
[INFO] [stdout] 200 |         return write(wr, true, e as u64, 0);
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write_num` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:205:5
[INFO] [stdout]     |
[INFO] [stdout] 205 |     write_num(&mut n, &mut curr, buf_ptr, lut_ptr);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:211:13
[INFO] [stdout]     |
[INFO] [stdout] 211 | /             slice::from_raw_parts(
[INFO] [stdout] 212 | |                 buf_ptr.offset(curr),
[INFO] [stdout] 213 | |                 buf.len() - curr as usize
[INFO] [stdout] 214 | |             )
[INFO] [stdout]     | |_____________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:212:17
[INFO] [stdout]     |
[INFO] [stdout] 212 |                 buf_ptr.offset(curr),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:224:9
[INFO] [stdout]     |
[INFO] [stdout] 224 |         *buf_ptr.offset(curr - 1) = *buf_ptr.offset(curr);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:224:10
[INFO] [stdout]     |
[INFO] [stdout] 224 |         *buf_ptr.offset(curr - 1) = *buf_ptr.offset(curr);
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:224:37
[INFO] [stdout]     |
[INFO] [stdout] 224 |         *buf_ptr.offset(curr - 1) = *buf_ptr.offset(curr);
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:224:38
[INFO] [stdout]     |
[INFO] [stdout] 224 |         *buf_ptr.offset(curr - 1) = *buf_ptr.offset(curr);
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:225:9
[INFO] [stdout]     |
[INFO] [stdout] 225 |         *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:225:10
[INFO] [stdout]     |
[INFO] [stdout] 225 |         *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 231 | /         slice::from_raw_parts(
[INFO] [stdout] 232 | |             buf_ptr.offset(curr),
[INFO] [stdout] 233 | |             buf.len() - curr as usize
[INFO] [stdout] 234 | |         )
[INFO] [stdout]     | |_________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:232:13
[INFO] [stdout]     |
[INFO] [stdout] 232 |             buf_ptr.offset(curr),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:237:5
[INFO] [stdout]     |
[INFO] [stdout] 237 |     write(wr, true, e, 0)
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly borrow within an implicitly-borrowing pattern
[INFO] [stdout]   --> src/highlight.rs:19:34
[INFO] [stdout]    |
[INFO] [stdout] 19 |           (WriteSlice::Remainder(ref left), WriteSlice::Remainder(ref right)) => right == left,
[INFO] [stdout]    |                                  ^^^                              ^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |                                  |
[INFO] [stdout]    |                                  explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:19:45
[INFO] [stdout]    |
[INFO] [stdout] 19 |           (WriteSlice::Remainder(ref left), WriteSlice::Remainder(ref right)) => right == left,
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 |           (WriteSlice::Remainder(ref left), WriteSlice::Remainder(ref right)) => right == left,
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: remove the unnecessary binding modifiers
[INFO] [stdout]    |
[INFO] [stdout] 19 -           (WriteSlice::Remainder(ref left), WriteSlice::Remainder(ref right)) => right == left,
[INFO] [stdout] 19 +           (WriteSlice::Remainder(left), WriteSlice::Remainder(right)) => right == left,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly borrow within an implicitly-borrowing pattern
[INFO] [stdout]   --> src/highlight.rs:20:30
[INFO] [stdout]    |
[INFO] [stdout] 20 |           (WriteSlice::Match(ref left, ref lcolor), WriteSlice::Match(ref right, ref rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout]    |                              ^^^       ^^^                            ^^^        ^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |                              |         |                              |
[INFO] [stdout]    |                              |         |                              explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |                              |         explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |                              explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:20:53
[INFO] [stdout]    |
[INFO] [stdout] 20 |           (WriteSlice::Match(ref left, ref lcolor), WriteSlice::Match(ref right, ref rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 |           (WriteSlice::Match(ref left, ref lcolor), WriteSlice::Match(ref right, ref rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: remove the unnecessary binding modifiers
[INFO] [stdout]    |
[INFO] [stdout] 20 -           (WriteSlice::Match(ref left, ref lcolor), WriteSlice::Match(ref right, ref rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout] 20 +           (WriteSlice::Match(left, lcolor), WriteSlice::Match(right, rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly borrow within an implicitly-borrowing pattern
[INFO] [stdout]   --> src/highlight.rs:69:42
[INFO] [stdout]    |
[INFO] [stdout] 69 |                 (WriteSlice::Match(code, ref color),_) | (WriteSlice::Remainder(code), Some(ref color)) => {
[INFO] [stdout]    |                                          ^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:69:18
[INFO] [stdout]    |
[INFO] [stdout] 69 |                 (WriteSlice::Match(code, ref color),_) | (WriteSlice::Remainder(code), Some(ref color)) => {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]    |
[INFO] [stdout] 69 -                 (WriteSlice::Match(code, ref color),_) | (WriteSlice::Remainder(code), Some(ref color)) => {
[INFO] [stdout] 69 +                 (WriteSlice::Match(code, color),_) | (WriteSlice::Remainder(code), Some(ref color)) => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly borrow within an implicitly-borrowing pattern
[INFO] [stdout]   --> src/highlight.rs:87:35
[INFO] [stdout]    |
[INFO] [stdout] 87 |         Some(WriteSlice::Match(_, ref color)) => Some(color.clone()),
[INFO] [stdout]    |                                   ^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:87:14
[INFO] [stdout]    |
[INFO] [stdout] 87 |         Some(WriteSlice::Match(_, ref color)) => Some(color.clone()),
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]    |
[INFO] [stdout] 87 -         Some(WriteSlice::Match(_, ref color)) => Some(color.clone()),
[INFO] [stdout] 87 +         Some(WriteSlice::Match(_, color)) => Some(color.clone()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly borrow within an implicitly-borrowing pattern
[INFO] [stdout]    --> src/highlight.rs:150:40
[INFO] [stdout]     |
[INFO] [stdout] 150 |             Some(WriteSlice::Remainder(ref mut code)) => code,
[INFO] [stdout]     |                                        ^^^^^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> src/highlight.rs:150:18
[INFO] [stdout]     |
[INFO] [stdout] 150 |             Some(WriteSlice::Remainder(ref mut code)) => code,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&mut _`
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]     |
[INFO] [stdout] 150 -             Some(WriteSlice::Remainder(ref mut code)) => code,
[INFO] [stdout] 150 +             Some(WriteSlice::Remainder(code)) => code,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly borrow within an implicitly-borrowing pattern
[INFO] [stdout]    --> src/highlight.rs:151:36
[INFO] [stdout]     |
[INFO] [stdout] 151 |             Some(WriteSlice::Match(ref mut code, _)) => code,
[INFO] [stdout]     |                                    ^^^^^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> src/highlight.rs:151:18
[INFO] [stdout]     |
[INFO] [stdout] 151 |             Some(WriteSlice::Match(ref mut code, _)) => code,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&mut _`
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]     |
[INFO] [stdout] 151 -             Some(WriteSlice::Match(ref mut code, _)) => code,
[INFO] [stdout] 151 +             Some(WriteSlice::Match(code, _)) => code,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0133`.
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> src/generator/print_dec.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | unsafe fn write_num(n: &mut u64, curr: &mut isize, buf_ptr: *mut u8, lut_ptr: *const u8) {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:30:34
[INFO] [stdout]    |
[INFO] [stdout] 30 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:30:54
[INFO] [stdout]    |
[INFO] [stdout] 30 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |         ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(*curr + 2), 2);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:31:34
[INFO] [stdout]    |
[INFO] [stdout] 31 |         ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(*curr + 2), 2);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:31:54
[INFO] [stdout]    |
[INFO] [stdout] 31 |         ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(*curr + 2), 2);
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 39 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:39:34
[INFO] [stdout]    |
[INFO] [stdout] 39 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:39:54
[INFO] [stdout]    |
[INFO] [stdout] 39 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 |         *buf_ptr.offset(*curr) = (*n as u8) + b'0';
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:45:10
[INFO] [stdout]    |
[INFO] [stdout] 45 |         *buf_ptr.offset(*curr) = (*n as u8) + b'0';
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 49 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:49:34
[INFO] [stdout]    |
[INFO] [stdout] 49 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:49:54
[INFO] [stdout]    |
[INFO] [stdout] 49 |         ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(*curr), 2);
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::mem::uninitialized` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:62:29
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let mut buf: [u8; 30] = mem::uninitialized();
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> src/generator/print_dec.rs:53:1
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub unsafe fn write<W: io::Write>(wr: &mut W, positive: bool, mut n: u64, exponent: i16) -> io::Result<()> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write_num` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:68:9
[INFO] [stdout]    |
[INFO] [stdout] 68 |         write_num(&mut n, &mut curr, buf_ptr, lut_ptr);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:71:13
[INFO] [stdout]    |
[INFO] [stdout] 71 | /             slice::from_raw_parts(
[INFO] [stdout] 72 | |                 buf_ptr.offset(curr),
[INFO] [stdout] 73 | |                 buf.len() - curr as usize
[INFO] [stdout] 74 | |             )
[INFO] [stdout]    | |_____________^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:72:17
[INFO] [stdout]    |
[INFO] [stdout] 72 |                 buf_ptr.offset(curr),
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:89:17
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:89:42
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:89:62
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:90:17
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:90:42
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/generator/print_dec.rs:90:62
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:100:17
[INFO] [stdout]     |
[INFO] [stdout] 100 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:100:42
[INFO] [stdout]     |
[INFO] [stdout] 100 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:100:62
[INFO] [stdout]     |
[INFO] [stdout] 100 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:105:17
[INFO] [stdout]     |
[INFO] [stdout] 105 |                 *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:105:18
[INFO] [stdout]     |
[INFO] [stdout] 105 |                 *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:110:13
[INFO] [stdout]     |
[INFO] [stdout] 110 |             *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:110:14
[INFO] [stdout]     |
[INFO] [stdout] 110 |             *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write_num` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:112:13
[INFO] [stdout]     |
[INFO] [stdout] 112 |             write_num(&mut n, &mut curr, buf_ptr, lut_ptr);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:115:17
[INFO] [stdout]     |
[INFO] [stdout] 115 |                 slice::from_raw_parts(buf_ptr.offset(curr), buf.len() - curr as usize)
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:115:39
[INFO] [stdout]     |
[INFO] [stdout] 115 |                 slice::from_raw_parts(buf_ptr.offset(curr), buf.len() - curr as usize)
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:128:13
[INFO] [stdout]     |
[INFO] [stdout] 128 |             *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:128:14
[INFO] [stdout]     |
[INFO] [stdout] 128 |             *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:138:17
[INFO] [stdout]     |
[INFO] [stdout] 138 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:138:42
[INFO] [stdout]     |
[INFO] [stdout] 138 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:138:62
[INFO] [stdout]     |
[INFO] [stdout] 138 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:139:17
[INFO] [stdout]     |
[INFO] [stdout] 139 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:139:42
[INFO] [stdout]     |
[INFO] [stdout] 139 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:139:62
[INFO] [stdout]     |
[INFO] [stdout] 139 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d2), buf_ptr.offset(curr + 2), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:147:17
[INFO] [stdout]     |
[INFO] [stdout] 147 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:147:42
[INFO] [stdout]     |
[INFO] [stdout] 147 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:147:62
[INFO] [stdout]     |
[INFO] [stdout] 147 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:153:17
[INFO] [stdout]     |
[INFO] [stdout] 153 |                 *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:153:18
[INFO] [stdout]     |
[INFO] [stdout] 153 |                 *buf_ptr.offset(curr) = ((n % 10) as u8) + b'0';
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:159:17
[INFO] [stdout]     |
[INFO] [stdout] 159 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:159:42
[INFO] [stdout]     |
[INFO] [stdout] 159 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:159:62
[INFO] [stdout]     |
[INFO] [stdout] 159 |                 ptr::copy_nonoverlapping(lut_ptr.offset(d1), buf_ptr.offset(curr), 2);
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |             *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:177:14
[INFO] [stdout]     |
[INFO] [stdout] 177 |             *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write_num` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:179:13
[INFO] [stdout]     |
[INFO] [stdout] 179 |             write_num(&mut n, &mut curr, buf_ptr, lut_ptr);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:184:13
[INFO] [stdout]     |
[INFO] [stdout] 184 | /             slice::from_raw_parts(
[INFO] [stdout] 185 | |                 buf_ptr.offset(curr),
[INFO] [stdout] 186 | |                 buf.len() - curr as usize
[INFO] [stdout] 187 | |             )
[INFO] [stdout]     | |_____________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:185:17
[INFO] [stdout]     |
[INFO] [stdout] 185 |                 buf_ptr.offset(curr),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:200:16
[INFO] [stdout]     |
[INFO] [stdout] 200 |         return write(wr, true, e as u64, 0);
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write_num` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:205:5
[INFO] [stdout]     |
[INFO] [stdout] 205 |     write_num(&mut n, &mut curr, buf_ptr, lut_ptr);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:211:13
[INFO] [stdout]     |
[INFO] [stdout] 211 | /             slice::from_raw_parts(
[INFO] [stdout] 212 | |                 buf_ptr.offset(curr),
[INFO] [stdout] 213 | |                 buf.len() - curr as usize
[INFO] [stdout] 214 | |             )
[INFO] [stdout]     | |_____________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:212:17
[INFO] [stdout]     |
[INFO] [stdout] 212 |                 buf_ptr.offset(curr),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:224:9
[INFO] [stdout]     |
[INFO] [stdout] 224 |         *buf_ptr.offset(curr - 1) = *buf_ptr.offset(curr);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:224:10
[INFO] [stdout]     |
[INFO] [stdout] 224 |         *buf_ptr.offset(curr - 1) = *buf_ptr.offset(curr);
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `json-highlight-writer` (lib) due to 30 previous errors; 69 warnings emitted
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:224:37
[INFO] [stdout]     |
[INFO] [stdout] 224 |         *buf_ptr.offset(curr - 1) = *buf_ptr.offset(curr);
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:224:38
[INFO] [stdout]     |
[INFO] [stdout] 224 |         *buf_ptr.offset(curr - 1) = *buf_ptr.offset(curr);
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:225:9
[INFO] [stdout]     |
[INFO] [stdout] 225 |         *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:225:10
[INFO] [stdout]     |
[INFO] [stdout] 225 |         *buf_ptr.offset(curr) = b'.';
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::slice::from_raw_parts` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 231 | /         slice::from_raw_parts(
[INFO] [stdout] 232 | |             buf_ptr.offset(curr),
[INFO] [stdout] 233 | |             buf.len() - curr as usize
[INFO] [stdout] 234 | |         )
[INFO] [stdout]     | |_________^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:232:13
[INFO] [stdout]     |
[INFO] [stdout] 232 |             buf_ptr.offset(curr),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `generator::print_dec::write` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/generator/print_dec.rs:237:5
[INFO] [stdout]     |
[INFO] [stdout] 237 |     write(wr, true, e, 0)
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly borrow within an implicitly-borrowing pattern
[INFO] [stdout]   --> src/highlight.rs:19:34
[INFO] [stdout]    |
[INFO] [stdout] 19 |           (WriteSlice::Remainder(ref left), WriteSlice::Remainder(ref right)) => right == left,
[INFO] [stdout]    |                                  ^^^                              ^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |                                  |
[INFO] [stdout]    |                                  explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:19:45
[INFO] [stdout]    |
[INFO] [stdout] 19 |           (WriteSlice::Remainder(ref left), WriteSlice::Remainder(ref right)) => right == left,
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 |           (WriteSlice::Remainder(ref left), WriteSlice::Remainder(ref right)) => right == left,
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: remove the unnecessary binding modifiers
[INFO] [stdout]    |
[INFO] [stdout] 19 -           (WriteSlice::Remainder(ref left), WriteSlice::Remainder(ref right)) => right == left,
[INFO] [stdout] 19 +           (WriteSlice::Remainder(left), WriteSlice::Remainder(right)) => right == left,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly borrow within an implicitly-borrowing pattern
[INFO] [stdout]   --> src/highlight.rs:20:30
[INFO] [stdout]    |
[INFO] [stdout] 20 |           (WriteSlice::Match(ref left, ref lcolor), WriteSlice::Match(ref right, ref rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout]    |                              ^^^       ^^^                            ^^^        ^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |                              |         |                              |
[INFO] [stdout]    |                              |         |                              explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |                              |         explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |                              explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:20:53
[INFO] [stdout]    |
[INFO] [stdout] 20 |           (WriteSlice::Match(ref left, ref lcolor), WriteSlice::Match(ref right, ref rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 |           (WriteSlice::Match(ref left, ref lcolor), WriteSlice::Match(ref right, ref rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: remove the unnecessary binding modifiers
[INFO] [stdout]    |
[INFO] [stdout] 20 -           (WriteSlice::Match(ref left, ref lcolor), WriteSlice::Match(ref right, ref rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout] 20 +           (WriteSlice::Match(left, lcolor), WriteSlice::Match(right, rcolor)) => right == left && rcolor == lcolor,
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly borrow within an implicitly-borrowing pattern
[INFO] [stdout]   --> src/highlight.rs:69:42
[INFO] [stdout]    |
[INFO] [stdout] 69 |                 (WriteSlice::Match(code, ref color),_) | (WriteSlice::Remainder(code), Some(ref color)) => {
[INFO] [stdout]    |                                          ^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:69:18
[INFO] [stdout]    |
[INFO] [stdout] 69 |                 (WriteSlice::Match(code, ref color),_) | (WriteSlice::Remainder(code), Some(ref color)) => {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]    |
[INFO] [stdout] 69 -                 (WriteSlice::Match(code, ref color),_) | (WriteSlice::Remainder(code), Some(ref color)) => {
[INFO] [stdout] 69 +                 (WriteSlice::Match(code, color),_) | (WriteSlice::Remainder(code), Some(ref color)) => {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly borrow within an implicitly-borrowing pattern
[INFO] [stdout]   --> src/highlight.rs:87:35
[INFO] [stdout]    |
[INFO] [stdout] 87 |         Some(WriteSlice::Match(_, ref color)) => Some(color.clone()),
[INFO] [stdout]    |                                   ^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]   --> src/highlight.rs:87:14
[INFO] [stdout]    |
[INFO] [stdout] 87 |         Some(WriteSlice::Match(_, ref color)) => Some(color.clone()),
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&_`
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]    |
[INFO] [stdout] 87 -         Some(WriteSlice::Match(_, ref color)) => Some(color.clone()),
[INFO] [stdout] 87 +         Some(WriteSlice::Match(_, color)) => Some(color.clone()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly borrow within an implicitly-borrowing pattern
[INFO] [stdout]    --> src/highlight.rs:150:40
[INFO] [stdout]     |
[INFO] [stdout] 150 |             Some(WriteSlice::Remainder(ref mut code)) => code,
[INFO] [stdout]     |                                        ^^^^^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> src/highlight.rs:150:18
[INFO] [stdout]     |
[INFO] [stdout] 150 |             Some(WriteSlice::Remainder(ref mut code)) => code,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&mut _`
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]     |
[INFO] [stdout] 150 -             Some(WriteSlice::Remainder(ref mut code)) => code,
[INFO] [stdout] 150 +             Some(WriteSlice::Remainder(code)) => code,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot explicitly borrow within an implicitly-borrowing pattern
[INFO] [stdout]    --> src/highlight.rs:151:36
[INFO] [stdout]     |
[INFO] [stdout] 151 |             Some(WriteSlice::Match(ref mut code, _)) => code,
[INFO] [stdout]     |                                    ^^^^^^^ explicit `ref` binding modifier not allowed when implicitly borrowing
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/reference/patterns.html#binding-modes>
[INFO] [stdout] note: matching on a reference type with a non-reference pattern implicitly borrows the contents
[INFO] [stdout]    --> src/highlight.rs:151:18
[INFO] [stdout]     |
[INFO] [stdout] 151 |             Some(WriteSlice::Match(ref mut code, _)) => code,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this non-reference pattern matches on a reference type `&mut _`
[INFO] [stdout] help: remove the unnecessary binding modifier
[INFO] [stdout]     |
[INFO] [stdout] 151 -             Some(WriteSlice::Match(ref mut code, _)) => code,
[INFO] [stdout] 151 +             Some(WriteSlice::Match(code, _)) => code,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0133`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `json-highlight-writer` (lib test) due to 30 previous errors; 69 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "e93d694c6a977e442e7a6b350c17f025e10abf09e987581741b1a837b29aa0b3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e93d694c6a977e442e7a6b350c17f025e10abf09e987581741b1a837b29aa0b3", kill_on_drop: false }`
[INFO] [stdout] e93d694c6a977e442e7a6b350c17f025e10abf09e987581741b1a837b29aa0b3
